"""
    动态删除属性和方法
"""

class Dog:
    """dog类"""
    home = "海南省海口市"
    def __init__(self,name,age):
        self.name=name
        self.age = age

    def run(self):
        print("dog like run")

dog = Dog("小白",3)
dog.run()
delattr(dog,"name")
# 没有了 name 属性，获取失败
# print(dog.name)

# 这种写法是错误的，不能 delattr 是删除对象的属性的，run 是方法
# delattr(dog,"run")

# 删除实例上方法的绑定，这种方法在 python 3.x 不支持了
# del dog.run

# 能处理的方式：直接删除类本身的方法，会影响所有的实例
del Dog.run
# dog.run()

dog2 = Dog("小黑",4)
# 调用失败，上面删除了 Dog.run 方法了
# dog2.run()
# 可以调用，delattr 只是删除某个实例的属性，别的实例不受影响
print(dog2.name)
